#!/bin/bash

# 配置区 ==============================================
SERVER_IP="82.156.149.194"          # 服务器IP
SERVER_USER="root"                 # SSH用户名
SSH_PORT="22"                      # SSH端口（默认22）
LOCAL_DIST="./dist"                # 本地打包目录
NGINX_ROOT="/usr/local/nginx/html" # 服务器Nginx根目录
BACKUP_DIR="/usr/local/nginx/backup" # 备份目录
NG_PROJECT_NAME="dist" # ng html下的项目目录

echo "使用npm安装依赖"
npm install || { echo "npm安装失败"; exit 1; }
npm run build || { echo "npm构建失败"; exit 1; }

# 检查本地dist目录是否存在
if [ ! -d "$LOCAL_DIST" ]; then
  echo "错误：本地打包目录 $LOCAL_DIST 不存在！"
  exit 1
fi

# 1. 创建压缩包
echo "正在压缩dist目录..."
TIMESTAMP=$(date +%Y%m%d%H%M%S)
TAR_FILE="dist_$TIMESTAMP.tar.gz"
tar -czf $TAR_FILE -C $LOCAL_DIST .

# 2. 上传到服务器
echo "上传到服务器..."
scp -P $SSH_PORT $TAR_FILE $SERVER_USER@$SERVER_IP:/tmp/

# 3. 服务器端操作
echo "正在部署到Nginx..."
ssh -p $SSH_PORT $SERVER_USER@$SERVER_IP << EOF
  # 创建备份目录
  mkdir -p $BACKUP_DIR
  
  # 备份旧版本（如果存在）
  if [ -d "$NGINX_ROOT/$NG_PROJECT_NAME" ]; then
    echo "备份旧版本..."
    BACKUP_NAME="$NG_PROJECT_NAME'_backup_'$TIMESTAMP"
    tar -czf $BACKUP_DIR/\$BACKUP_NAME.tar.gz -C $NGINX_ROOT $NG_PROJECT_NAME
  fi

  # 清空目标目录
  rm -rf $NGINX_ROOT/$NG_PROJECT_NAME
  
  # 解压新版本
  mkdir -p $NGINX_ROOT/$NG_PROJECT_NAME
  tar -xzf /tmp/$TAR_FILE -C $NGINX_ROOT/$NG_PROJECT_NAME
  
  # 设置权限
  chown -R root:root $NGINX_ROOT/$NG_PROJECT_NAME
  chmod -R 755 $NGINX_ROOT/$NG_PROJECT_NAME
  
  # 清理临时文件
  rm -f /tmp/$TAR_FILE
  
  # 重启Nginx服务
  # systemctl restart nginx
EOF

# 4. 清理本地
rm -f $TAR_FILE

echo "===================================="
echo "部署成功！"
echo "访问地址：http://$SERVER_IP/"
echo "备份位置：$BACKUP_DIR/$NG_PROJECT_NAME_backup_$TIMESTAMP.tar.gz"
echo "===================================="